(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
a(f, a(g, a(f, x))) → a(f, a(g, a(g, a(f, x))))
a(g, a(f, a(g, x))) → a(g, a(f, a(f, a(g, x))))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
a(f, a(g, a(f, z0))) → a(f, a(g, a(g, a(f, z0))))
a(g, a(f, a(g, z0))) → a(g, a(f, a(f, a(g, z0))))
Tuples:
A(f, a(g, a(f, z0))) → c(A(f, a(g, a(g, a(f, z0)))), A(g, a(g, a(f, z0))), A(g, a(f, z0)), A(f, z0))
A(g, a(f, a(g, z0))) → c1(A(g, a(f, a(f, a(g, z0)))), A(f, a(f, a(g, z0))), A(f, a(g, z0)), A(g, z0))
S tuples:
A(f, a(g, a(f, z0))) → c(A(f, a(g, a(g, a(f, z0)))), A(g, a(g, a(f, z0))), A(g, a(f, z0)), A(f, z0))
A(g, a(f, a(g, z0))) → c1(A(g, a(f, a(f, a(g, z0)))), A(f, a(f, a(g, z0))), A(f, a(g, z0)), A(g, z0))
K tuples:none
Defined Rule Symbols:
a
Defined Pair Symbols:
A
Compound Symbols:
c, c1
(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
A(
f,
a(
g,
a(
f,
z0))) →
c(
A(
f,
a(
g,
a(
g,
a(
f,
z0)))),
A(
g,
a(
g,
a(
f,
z0))),
A(
g,
a(
f,
z0)),
A(
f,
z0)) by
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
a(f, a(g, a(f, z0))) → a(f, a(g, a(g, a(f, z0))))
a(g, a(f, a(g, z0))) → a(g, a(f, a(f, a(g, z0))))
Tuples:
A(g, a(f, a(g, z0))) → c1(A(g, a(f, a(f, a(g, z0)))), A(f, a(f, a(g, z0))), A(f, a(g, z0)), A(g, z0))
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
S tuples:
A(g, a(f, a(g, z0))) → c1(A(g, a(f, a(f, a(g, z0)))), A(f, a(f, a(g, z0))), A(f, a(g, z0)), A(g, z0))
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
K tuples:none
Defined Rule Symbols:
a
Defined Pair Symbols:
A
Compound Symbols:
c1, c
(5) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
A(
g,
a(
f,
a(
g,
z0))) →
c1(
A(
g,
a(
f,
a(
f,
a(
g,
z0)))),
A(
f,
a(
f,
a(
g,
z0))),
A(
f,
a(
g,
z0)),
A(
g,
z0)) by
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
a(f, a(g, a(f, z0))) → a(f, a(g, a(g, a(f, z0))))
a(g, a(f, a(g, z0))) → a(g, a(f, a(f, a(g, z0))))
Tuples:
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
S tuples:
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
K tuples:none
Defined Rule Symbols:
a
Defined Pair Symbols:
A
Compound Symbols:
c, c1
(7) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
We considered the (Usable) Rules:none
And the Tuples:
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(A(x1, x2)) = [1] + x2
POL(a(x1, x2)) = [2] + [4]x2
POL(c(x1, x2)) = x1 + x2
POL(c1(x1, x2)) = x1 + x2
POL(f) = 0
POL(g) = 0
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
a(f, a(g, a(f, z0))) → a(f, a(g, a(g, a(f, z0))))
a(g, a(f, a(g, z0))) → a(g, a(f, a(f, a(g, z0))))
Tuples:
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
S tuples:none
K tuples:
A(f, a(g, a(f, x0))) → c(A(g, a(f, x0)), A(f, x0))
A(g, a(f, a(g, x0))) → c1(A(f, a(g, x0)), A(g, x0))
Defined Rule Symbols:
a
Defined Pair Symbols:
A
Compound Symbols:
c, c1
(9) SIsEmptyProof (EQUIVALENT transformation)
The set S is empty
(10) BOUNDS(O(1), O(1))